GdkEvent *history_event)
{
GdkMotionEvent *self = (GdkMotionEvent *) event;
+ GdkDeviceTool *tool;
GdkTimeCoord hist;
- GdkDevice *device;
- int i, n_axes;
+ int i;
g_assert (GDK_IS_EVENT_TYPE (event, GDK_MOTION_NOTIFY));
g_assert (GDK_IS_EVENT_TYPE (history_event, GDK_MOTION_NOTIFY));
- device = gdk_event_get_device (history_event);
- n_axes = gdk_device_get_n_axes (device);
+ if (!self->tool)
+ return;
+
+ tool = gdk_event_get_device_tool (history_event);
memset (&hist, 0, sizeof (GdkTimeCoord));
hist.time = gdk_event_get_time (history_event);
- hist.flags = gdk_device_get_axes (device);
+ hist.flags = gdk_device_tool_get_axes (tool);
- for (i = 0; i < n_axes; i++)
- {
- GdkAxisUse use = gdk_device_get_axis_use (device, i);
- gdk_event_get_axis (history_event, use, &hist.axes[use]);
- }
+ for (i = GDK_AXIS_X; i < GDK_AXIS_LAST; i++)
+ gdk_event_get_axis (history_event, i, &hist.axes[i]);
if (G_UNLIKELY (!self->history))
self->history = g_array_new (FALSE, TRUE, sizeof (GdkTimeCoord));
if (!gdk_event_get_axes (event, &axes, &n_axes))
return FALSE;
- if (axis_use >= gdk_device_get_n_axes (event->device))
- return FALSE;
-
- return gdk_device_get_axis (event->device, axes, axis_use, value);
+ *value = axes[axis_use];
+ return TRUE;
}
/**
return FALSE;
*axes = self->axes;
- *n_axes = gdk_device_get_n_axes (source_device);
+ *n_axes = GDK_AXIS_LAST;
return TRUE;
}
return FALSE;
*axes = self->axes;
- *n_axes = gdk_device_get_n_axes (source_device);
+ *n_axes = GDK_AXIS_LAST;
return TRUE;
}
return FALSE;
*axes = self->axes;
- *n_axes = gdk_device_get_n_axes (source_device);
+ *n_axes = GDK_AXIS_LAST;
return TRUE;
}
GdkWaylandTabletToolData *current_tool;
int axis_indices[GDK_AXIS_LAST];
- double *axes;
+ double axes[GDK_AXIS_LAST];
};
struct _GdkWaylandSeat
if (tablet->pointer_info.focus)
g_object_unref (tablet->pointer_info.focus);
- if (tablet->axes)
- g_free (tablet->axes);
-
wl_surface_destroy (tablet->pointer_info.pointer_surface);
g_object_unref (tablet->logical_device);
g_object_unref (tablet->stylus_device);
tablet->axis_indices[GDK_AXIS_SLIDER] = axis_pos;
}
- if (tablet->axes)
- g_free (tablet->axes);
-
- tablet->axes =
- g_new0 (double, gdk_device_get_n_axes (tablet->stylus_device));
-
g_object_thaw_notify (G_OBJECT (tablet->stylus_device));
}
tablet_copy_axes (GdkWaylandTabletData *tablet)
{
return g_memdup (tablet->axes,
- sizeof (double) * gdk_device_get_n_axes (tablet->stylus_device));
+ sizeof (double) * GDK_AXIS_LAST);
}
static void
int axis_index = tablet->axis_indices[GDK_AXIS_PRESSURE];
_gdk_device_translate_axis (tablet->stylus_device, axis_index,
- pressure, &tablet->axes[axis_index]);
+ pressure, &tablet->axes[GDK_AXIS_PRESSURE]);
GDK_SEAT_NOTE (tool->seat, EVENTS,
g_message ("tablet tool %d pressure %d",
int axis_index = tablet->axis_indices[GDK_AXIS_DISTANCE];
_gdk_device_translate_axis (tablet->stylus_device, axis_index,
- distance, &tablet->axes[axis_index]);
+ distance, &tablet->axes[GDK_AXIS_DISTANCE]);
GDK_SEAT_NOTE (tool->seat, EVENTS,
g_message ("tablet tool %d distance %d",
_gdk_device_translate_axis (tablet->stylus_device, xtilt_axis_index,
wl_fixed_to_double (xtilt),
- &tablet->axes[xtilt_axis_index]);
+ &tablet->axes[GDK_AXIS_XTILT]);
_gdk_device_translate_axis (tablet->stylus_device, ytilt_axis_index,
wl_fixed_to_double (ytilt),
- &tablet->axes[ytilt_axis_index]);
+ &tablet->axes[GDK_AXIS_YTILT]);
GDK_SEAT_NOTE (tool->seat, EVENTS,
g_message ("tablet tool %d tilt %f/%f",
_gdk_device_translate_axis (tablet->stylus_device, axis_index,
wl_fixed_to_double (degrees),
- &tablet->axes[axis_index]);
+ &tablet->axes[GDK_AXIS_ROTATION]);
GDK_SEAT_NOTE (tool->seat, EVENTS,
g_message ("tablet tool %d rotation %f",
int axis_index = tablet->axis_indices[GDK_AXIS_SLIDER];
_gdk_device_translate_axis (tablet->stylus_device, axis_index,
- position, &tablet->axes[axis_index]);
+ position, &tablet->axes[GDK_AXIS_SLIDER]);
GDK_SEAT_NOTE (tool->seat, EVENTS,
g_message ("tablet tool %d slider %d",
double *vals;
n_axes = gdk_device_get_n_axes (device);
- axes = g_new0 (double, n_axes);
+ axes = g_new0 (double, GDK_AXIS_LAST);
vals = valuators->values;
for (i = 0; i < MIN (valuators->mask_len * 8, n_axes); i++)
double val;
if (!XIMaskIsSet (valuators->mask, i))
- {
- axes[i] = gdk_x11_device_xi2_get_last_axis_value (GDK_X11_DEVICE_XI2 (device), i);
- continue;
- }
+ continue;
use = gdk_device_get_axis_use (device, i);
val = *vals++;
case GDK_AXIS_Y:
{
if (use == GDK_AXIS_X)
- axes[i] = x;
+ axes[use] = x;
else
- axes[i] = y;
+ axes[use] = y;
}
break;
default:
- _gdk_device_translate_axis (device, i, val, &axes[i]);
+ _gdk_device_translate_axis (device, i, val, &axes[use]);
break;
}
}